
package com.shop.cereshop.commons.domain.bsamecity;

import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.TableField;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.Range;
import java.time.LocalDateTime;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.ToString;
import lombok.experimental.Accessors;

import static com.baomidou.mybatisplus.annotation.SqlCondition.LIKE;

/**
 * <p>
 * 实体类
 * 同城快递配送状态跟踪表
 * </p>
 *
 * @since 2025-08-12
 */
@Data
@NoArgsConstructor
@ToString(callSuper = true)
@TableName("cere_bsamecity_delivery_tracking")
@ApiModel(value = "BsamecityDeliveryTracking", description = "同城快递配送状态跟踪表")
@AllArgsConstructor
public class BsamecityDeliveryTracking {

    private static final long serialVersionUID = 1L;

    /**
     * 主键ID
     */
    @ApiModelProperty(value = "主键ID")
    @NotNull(message = "主键ID不能为空")
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;


    /**
     * 订单ID(对应下单返回的orderId)
     */
    @ApiModelProperty(value = "订单ID(对应下单返回的orderId)")
    @NotEmpty(message = "订单ID(对应下单返回的orderId)不能为空")
    @Length(max = 64, message = "订单ID(对应下单返回的orderId)长度不能超过64")
    @TableField(value = "order_id", condition = LIKE)
    private String orderId;


    /**
     * 本地系统订单ID
     */
    @ApiModelProperty(value = "本地系统订单ID")
    @Length(max = 64, message = "本地系统订单ID长度不能超过64")
    @TableField(value = "local_order_id", condition = LIKE)
    private String localOrderId;


    /**
     * 快递100任务ID
     */
    @ApiModelProperty(value = "快递100任务ID")
    @Length(max = 64, message = "快递100任务ID长度不能超过64")
    @TableField(value = "task_id", condition = LIKE)
    private String taskId;


    /**
     * 快递公司编码
     */
    @ApiModelProperty(value = "快递公司编码")
    @Length(max = 20, message = "快递公司编码长度不能超过20")
    @TableField(value = "kuaidicom", condition = LIKE)
    private String kuaidicom;


    /**
     * 订单状态(见状态码定义)
     */
    @ApiModelProperty(value = "订单状态(见状态码定义)")
    @NotNull(message = "订单状态(见状态码定义)不能为空")
    @TableField("status")
    private Integer status;


    /**
     * 订单状态描述
     */
    @ApiModelProperty(value = "订单状态描述")
    @Length(max = 100, message = "订单状态描述长度不能超过100")
    @TableField(value = "status_desc", condition = LIKE)
    private String statusDesc;


    /**
     * 骑手姓名
     */
    @ApiModelProperty(value = "骑手姓名")
    @Length(max = 20, message = "骑手姓名长度不能超过20")
    @TableField(value = "courier_name", condition = LIKE)
    private String courierName;


    /**
     * 骑手电话
     */
    @ApiModelProperty(value = "骑手电话")
    @Length(max = 20, message = "骑手电话长度不能超过20")
    @TableField(value = "courier_mobile", condition = LIKE)
    private String courierMobile;


    /**
     * 预计送达时间(yyyy-MM-dd HH:mm:ss)
     */
    @ApiModelProperty(value = "预计送达时间(yyyy-MM-dd HH:mm:ss)")
    @TableField("expect_finish_time")
    private LocalDateTime expectFinishTime;


    /**
     * 状态更新时间(yyyy-MM-dd HH:mm:ss)
     */
    @ApiModelProperty(value = "状态更新时间(yyyy-MM-dd HH:mm:ss)")
    @NotNull(message = "状态更新时间(yyyy-MM-dd HH:mm:ss)不能为空")
    @TableField("update_time")
    private LocalDateTime updateTime;


    /**
     * 记录创建时间
     */
    @ApiModelProperty(value = "记录创建时间")
    @TableField("create_time")
    private LocalDateTime createTime;




}
